"""
1.需求：有三个办公室，8位老师，8位老师随机分配到3个办公室
2、求100以内能被3整除的数，并将作为列表输出
3、列表[1,2,3,4,3,4,2,5,5,8,9,7],将此列表去重，得到一个唯一元素的列表  #不允许用强制类型转化
4、求斐波那契数列 1 1 2 3 5 8 13 ……
5、求100以内的质数（只能被1和它本身整除）
6、有一堆字符串“aabbbcddef”打印出不重复的字符串结果：cef #不允许用类型转化
7、有一堆字符串，“welocme to super&Test”，打印出superTest，#不能查字符的索引
8、有一堆字符串，“welocme to super&Test”，打印出tseT&repus ot ... #不允许用reverse,和reversed
9、有一堆字符串，“aabbbcddef”，输出abcdef # 不允许用set
"""
import random

# # 1.需求：有三个办公室，8位老师，8位老师随机分配到3个办公室
# 准备数据
# teachers = [1, 2, 3, 4, 5, 6, 7, 8]
# rooms = [[], [], []]
# l1 = [0, 1, 2]
# # 点名每位老师
# for i in teachers:
#     print(i)
#     # 老师抓阄进教室
#     n = random.choice(l1)
#     # # 判断房间是否满了,如果满了重新抓阄
#     if len(rooms[n])==3:
#         # 封闭已满的房间
#         l1.remove(n)
#         # 继续抓阄
#         n = random.choice(l1)
#         rooms[n].append(i)
#     else:
#         rooms[n].append(i)
#
# print(rooms)

# print(random.choice(list1))
# # 2、求100以内能被3整除的数，并将作为列表输出
# for i in range(101):
#     # 判断i是否能被3整除,可以的话加到结果内
#     if i % 3 == 0:
#         list1.append(i)
# print(list1)
# print([i for i in range(101) if i % 3 == 0])

# # 3、列表[1,2,3,4,3,4,2,5,5,8,9,7],将此列表去重，得到一个唯一元素的列表  #不允许用强制类型转化
# list1 = [1, 2, 3, 4, 3, 4, 2, 5, 5, 8, 9, 7]
# # 预设一个结果列表
# list2 = []
# print(id(list2))
# # 遍历list1里面每个元素,判断是否在list2 里面:
# for i in list1:
#     if i not in list2:
#         list2.append(i)
#
# print(list2)
# print(id(list2))
#
# # 9、有一堆字符串，“aabbbcddef”，输出abcdef # 不允许用set
# str1 = "aabbbcddef"
# # 预设一个结果列表
# str2 = ""
# print(id(str2))
# # 遍历list1里面每个元素,判断是否在list2 里面:
# for i in str1:
#     if i not in str2:
#         str2 += i
#
# print(str2)
# print(id(str2))


# 4、求斐波那契数列 1 1 2 3 5 8 13 ……
# # 方式一: 替换的方式
# list1 = []
# # 第一个数
# n1 = 1
# # 第二个数
# n2 = 1
# # 前面两个数的累加和,初始为0
# sum1 = 0
# # 循环n次,每一次将n1添加到列表内,然后求和,并替换n1和n2的值
# for i in range(12):
#     # 将第一个数加到结果类表内
#     list1.append(n1)
#     # 求和
#     sum1 = n1 + n2
#     # 进行替换
#     n1 = n2
#     n2 = sum1
# print(list1)
# # 方式二:
# list1 = [1,1]
# # 循环n次,每次将列表内的最后俩数加起来, 并把和放到列表内
# for i in  range(10):
#     # 计算最后两个数的和
#     sun1 = list1[-1]+list1[-2]
#     # 将和添加到结果类表内
#     list1.append(sun1)
#
# print(list1)

# 5、求100以内的质数（只能被1和它本身整除）
# list1 = []
# list2 = []
# for n in range(2, 101):
#     # 计算n是否是质数
#     # 遍历2-n之间的数,判断能否被整除
#     for i in range(2, n):
#         if n % i == 0:
#             print(f"{n}是合数")
#             list1.append(n)
#             break
#
#     else:
#         print(f"{n}是质数")
#         list2.append(n)
#
# print(list1)
# print(list2)

# # 6、有一堆字符串“aabbbcddef”打印出不重复的字符串结果：cef #不允许用类型转化
# str1 = "aabbbcddef"
# str2 = ""
# for i in str1:
#     if str1.count(i) == 1:
#         str2+=i
#
# print(str2)


# 7、有一堆字符串，“welocme to super&Test”，打印出superTest，#不能查字符的索引

# str1 = "welocme to super&Test"
# 获取每个单词
# list1 = str1.split(" ")
# print(list1)
# # 方式一: 遍历每个单词用&再次进行分割
# for i in list1:
#     list2 = i.split("&")
#     if len(list2) > 1:
#         print("".join(list2))
# # 方式二: 遍历每个单词用&再次进行分割
# for i in list1:
#     if "&" in i:
#         print(i.replace("&", ""))

# 8、有一堆字符串，“welocme to super&Test”，打印出tseT&repus ot ... #不允许用reverse,和reversed
# # 方式一: 首尾互换
# str1 = "welocme to super&Test"
# list1 = list(str1)
# # 进行首尾互换
# for i in range(len(str1)//2):
#     list1[i],list1[-i-1] = list1[-i-1],list1[i]
#
# print("".join(list1))
# # 方式二:
# str1 = "welocme to super&Test"
# list1 = list(str1)
# str2 = ""
# # 遍历字符串删除最后一个添加到新的字符串
# for i in range(len(str1)):
#     res = list1.pop()
#     str2 += res
#
# print(str2)


# # 方式三:
# str1 = "welocme to super&Test"
# str2 = ""
#
# for i in str1:
#     str2 = i+str2
#
# print(str2)
# print(str1[::-1])
